<?php namespace Common\Model;
use Hdphp\Model\Model;
//定义文章的类
class Arc extends Model{
//	指定模型操作的表
	protected $table = 'article';
//	自动验证的设置
	protected $validate =array(
		array('title','required','标题不能为空',3,3),
		array('author','required','作者不能为空',3,3),
	
	);
//	自动完成属性的设置
	protected $auto=array(
		array('sendtime','time','function',3,1),
		array('updatetime','time','function',3,3),
		array('user_uid','getUid','method',3,1),
		array('thumb','getThumb','method',3,3),
	);
//	定义一个获得上传文件的方法
	public function getThumb(){
		if($thumb=Q('post.thumb')){
			return $thumb;
		}
//	    	如果没有上传文件
		if($_FILES['thumb']['error'] == 4){
//			就执行错误操作提示信息
			$this->error = '缩略图必须上传';
//			返回值
			return;
		}
//		1.上传
		$files = Upload::path('./Upload/' . date('ymd'))->type('jpg,png,gif')->make();
//		如果$files为空数组的话,也就是上传失败,比如上传的类型不允许,大小不允许等
		if(!$files){
//			p($files);exit;
//			把上传的错误压入当前模型的error属性,这样外面的控制器就可以用getError方法调用
			$this->error = Upload::getError();
			return;
		}
//		2.缩略
//		路径p出来地址就是path后面的,所以获得path也就是获得路径
		$path = $files[0]['path'];
//		截取获取的path剩下的就是.jpg
		$type = strrchr($path, '.');
//		新的地址就在替换一下就是新的地址
		$newPath = str_replace($type, '_thumb' . $type, $path);
//		缩略图的大小
		Image::thumb($path,$newPath,700,355,6);
//		返回新的地址
		return $newPath;
	}
	public function getUid(){
//		return 出去的值就可以存在uid字段
	    return $_SESSION['info']['uid'];
	}
	
//	添加方法
public function store(){
	//	先验证**************
	//	1.article验证
	//	create触发自动验证和自动完成
		if(!$this->create()){
			return FALSE;
		}
		if($this->error){
			return FALSE;
		}
	//	2.article_data验证(需要重新再次建立模板)
		$arcDataModel = new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			$this->error = $arcDataModel->getError();
			return FALSE;
		}
	//	二.添加
	//	添加article表,添加文章会返回自增id
		$aid = $this->add();
	//	添加article_data表
		$arcDataModel->data['article_aid'] = $aid;
//		执行添加的方法
		$arcDataModel->add();
	//	添加article_tag表
		$arcTagModel = new \Common\Model\ArcTag;
		$arcTagModel->store($aid);
		return TRUE;
		
	}
///获得文章和分类表的关联数据
	public function getArcCate($row,$reint){
		//获得数据总数
		//注意where条件 is_recycle=0 因为is_recycle为0就是不在回收站
		$total = $this->join('category','category_cid','=','cid')->where("is_recycle=$reint")->count();
		//分页处理
		$page = Page::row($row)->make($total);
		//关联获得数据
		$arcCateData = $this->join('category','category_cid','=','cid')->field('aid,title,cname')->limit(Page::limit())->where("is_recycle=$reint")->get();
		//返回数据
//		p($arcCateData);exit;
		$data = array(
			'page' => $page,
			'data' => $arcCateData
		);
//		p($data);
		return $data;

	}
	
	public function edit($aid){
//		一.验证
//		验证article表
	    if(!$this->create()) return false;
//		验证上传图片
		if($this->error) return FALSE;
//		验证article_data表
		$arcDataModel = new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			$this->error = $arcDataModel->getError();
			return FALSE;
		}
		
//		二.修改
//		修改article
		$this->save();
//		修改article_aid
		$arcDataModel->where("article_aid={$aid}")->save();
		//修改article_tag(中间表)
		$arcTagModel = new \Common\Model\ArcTag;
//		1,先删除
		$arcTagModel->where("article_aid={$aid}")->delete();
//		2,在添加
		$arcTagModel->store($aid);
		return TRUE;
	}

}

 ?>